[TOC]

1 YKit Mock配置

1.1 设计

1.2 YKit Mock启动方式

  • ykit server启动时如果配置了mock插件会自动启动mock server
  • ykit server mock=false 方式启动可以不启动mock server
  • 如果使用了ykit server并配置了mock,直接访问mock接口无法访问,需要先访问mock文件对应项目的某个资源,让ykit加载到对应的mock配置,这种情况会在项目上一层启动ykit server的时候出现。

1.3 YKit Mock配置文件

  • 默认搜索项目根目录下的mock.js 或者 mock.json,推荐使用mock.js

  • 可以自定义配置文件的路径,在YKit的配置文件ykit.js或者ykit-xxx.js中修改

    1
    2
    3
    4
    5
    6
    7
    8
    9
    module.exports = {
    plugins: [{
    name: 'mock',
    options: {
    confPath: './tests/mockdata/mockconf.js'
    }
    }],
    // ...
    };

  • mock文件支持两种配置方式

    • FEKit原来支持的方式

      • key=>value形式, 其中key为路径的匹配规则,value为对应的mock数据指向;
      • pattern=>respondwith形式,其中pattern为路径匹配规则,respondwith为对应的mock数据指向;
      1
      2
      3
      4
      5
      6
      7
      module.exports = {
      '/uri/to/api':'relative/path/to/mock/data/file',
      rules:[{
      pattern: "/uri/pattern/to/match",
      respondwith:'relative/path/to/mock/data/file',
      }]
      }

    • YKit 增加的方式

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      module.exports = [{
      // pattern:'/api/list.json',
      // responder:'./data/listData.json'
      }, {
      pattern: /^\/api\/(\w+)\.json.*$/,
      responder: './data/$1Data.mockjson'
      }, {
      pattern: /^\/api\/(\w+)\.json.*$/,
      responder: './data/$1Data.js'
      }, {
      pattern: '/api/list.json',
      responder: {
      "ret": true,
      "data": [{
      "name": "Li Lei",
      "email": "lilei@test.com",
      "registerDateTime": "2020-10-01 22:11:11"
      }, {
      "name": "Han Meimei",
      "email": "hanmeimei@test.com",
      "registerDateTime": "2020-10-01 22:11:11"
      }]
      }
      }]
      • json文件的配置跟上面直接出的数据一样

      • mockjson的数据有些区别,如下

        1
        2
        3
        4
        5
        6
        7
        8
        9
        10
        11
        12
        {
        "ret|0-1":true,
        "data|2-5":[{
        "name":"@last @first",
        "email":"@email",
        "registerDateTime": "@date('yyyy-MM-dd') @time('HH:mm:ss')"
        },{
        "name":"@last @first",
        "email":"@email",
        "registerDateTime": "@date('yyyy-MM-dd') @time('HH:mm:ss')"
        }]
        }

  • YKit对jsonp和直接函数的支持

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    module.exports = [{
    pattern: '/api/list.json',
    responder:function(req,res){ //两个参数
    //这里可以有更多其他的处理过程
    res.end(JSON.stringify({
    "ret": true,
    "data": [{
    "name": "Li Lei",
    "email": "lilei@test.com",
    "registerDateTime": "2020-10-01 22:11:11"
    }, {
    "name": "Han Meimei",
    "email": "hanmeimei@test.com",
    "registerDateTime": "2020-10-01 22:11:11"
    }]
    }))
    }
    },{
    pattern: '/api/list.json',
    responder: './data/listData.json',
    jsonp:'jsCallback' //配置callbackKey
    }]

  • YKit Mock比 FEKit Mock强大的地方
    • 可以支持多个工程的mock文件,fekit只能同时用一个
    • YKit匹配的URL支持正则匹配到数据路径,这样可以批量造数据而配置一个规则,不用一个一个配
    • Mockjs 比 MockJSON强大得多,支持中文mock数据,可谓青出于蓝而胜于蓝

2 YKit Proxy 配置

2.1 设计

  • YKit Proxy 使用了蛟神写的一个牛逼的代理服务Jerry Proxy,主要功能
    • HOST 管理
    • 代理服务
    • 请求日志和断点
    • 网络限速

2.2 YKit Proxy 代理配置

2.2.1 Jerry Proxy 启动
  • 使用sudo ykit server -x 启动带代理服务的ykit server
  • 使用ykit server启动日志中的[JerryProxy] Available on: http://127.0.0.1:\d+/jerry中的URL访问代理服务器的界面
2.2.2 Jerry Proxy 配置
2.2.2.1 服务器组配置
  • 这里配置环境以及每套环境对应的机器,方便在HOST管理的地方被引用到
2.2.2.2 URL MAP
  • 请求转发的配置,支持转到本地文件,或者转发到其他页面
2.2.2.3 代理面板
  • 配置是否使用HTTPS代理和网络限速
  • 配置HOST分组,Jerry Proxy会为每一个发现的YKit工程新建一个对应的分组
  • HOST 规则的配置,参考添加规则的说明

3 代码地址

  • 所有的代码可以在**这里**找到。

4 参考资料

  1. YKit mock 插件源码
  2. Mockjs github
  3. Mockjs 文档
  4. Jerry Proxy

最后更新: 2022年03月02日 03:32

原始链接: http://rawbin-.github.io/dev-tools/2017-07-03-ykit-mock-ref/

× 赞赏这个人~
打赏二维码